/**
* \file IRenderContext.h
* \brief IRenderContext decleration class
* \author Edouard ROGE
* \date 13 Septembre 2014
*/
#ifndef _RENDERCONTEXT_
#define _RENDERCONTEXT_

namespace Core
{
	namespace Render
	{
		class IRenderContext
		{
		public:

			/**
			 * \fn virtual ITCPSocket * CreateTCPSocket() const = 0;
			 * \return Newly created connected socket (client side)
			 * \brief Create a connected socket (client side)
			 */
			//virtual ITCPSocket * CreateTCPSocket() const = 0;

			/**
			 * \fn void DestroyTCPSocket(ITCPSocket * _pSocket) const = 0;
			 * \param Connected Socket to destroy, previsouly created by this context
			 * \brief Destroy a connected socket
			 */
			//virtual void DestroyTCPSocket(ITCPSocket * _pSocket) const = 0;

			/**
			 * \fn virtual ITCPServerSocket * CreateTCPServerSocket() const = 0;
			 * \return Newly created connected socket (server side)
			 * \brief Create a connected socket (server side)
			 */
			//virtual ITCPServerSocket * CreateTCPServerSocket() const = 0;

			/**
			 * \fn void DestroySocket(ISocket * _pSocket) const = 0;
			 * \param Connected Socket (server side) to destroy, previsouly created by this context
			 * \brief Destroy a connected socket (server side)
			 */
			//virtual void DestroyTCPServerSocket(ITCPServerSocket * _pSocket) const = 0;

			/**
			 * \fn virtual IUDPSocket * CreateUDPSocket() const = 0;
			 * \return Newly created non-connected socket
			 * \brief Create a non-connected socket
			 */
			//virtual IUDPSocket * CreateUDPSocket() const = 0;

			/**
			 * \fn virtual void DestroyUDPSocket(IUDPSocket * _pSocket) const = 0;
			 * \param Non-connected socket to destroy, previsouly created by this context
			 * \brief Destroy a non-connected socket
			 */
			//virtual void DestroyUDPSocket(IUDPSocket * _pSocket) const = 0;
		};
	}
}

#endif // _IRENDERCONTEXT_
